package ysf.com.mediumdifficulty;

import ysf.com.listnode.ListNode;

/**
 * @author ysf
 * @date 2021/7/10 12:22
 */
public class NineteenthDemos {

    public static void main(String[] args) {

        ListNode listNode = new ListNode(1);
        listNode.add(2);
        listNode.add(3);
        listNode.add(4);

        ListNode listNode1 = removeNthFromEnd(listNode, 3);
        // 打印链表
        listNode1.print();
    }


    public static ListNode removeNthFromEnd(ListNode head, int n) {
        int len = 0;
        ListNode h = head;
        while (h != null){
            h = h.next;
            len++;
        }
        // 长度等于1 在删除一个结点就为null了
        if(len == 1){
            return null;
        }
        int rm_node_index = len - n;

        // 如果删除的是头节点
        if(rm_node_index == 0){
            return head.next;
        }
        // 找到被删除结点的前一个结点
        h = head;
        for (int i = 0; i < rm_node_index - 1; i++) {
            h = h.next;
        }
        //改变指向
        h.next = h.next.next;
        return head;
    }


}


